package org.groupg.practice;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class PDFGenerator {
    public static void main(String[] args) {
        String templatePath = "template.pdf"; // 模板文件的路径
        String outputPath = "output.pdf"; // 输出文件的路径
        String imagePath = "background.png"; // 背景图片的路径
        String fontPath = "C:\\Windows\\Fonts\\simfang.ttf"; // 字体的路径

        try (PDDocument document = PDDocument.load(new File(templatePath))) {
            // 添加一个新页面（如果需要）
            PDPage page = document.getPage(0);
//            document.addPage(page);

            // 获取第一个页面（假设模板只有一个页面）
            PDPage firstPage = document.getPage(0);


             // 加载背景图片
            PDImageXObject pdImage = PDImageXObject.createFromFile(imagePath, document);

            // 获取页面的资源字典，并设置图片资源
//            PDResources resources = new PDResources();
//            resources.put(pdImage., pdImage);
//            page.setResources(resources);

            // 创建内容流来编辑页面
            try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) {
                // 绘制背景图片到页面
                // 注意：这里的坐标(0, 0)是图片的左下角，你需要根据图片大小和页面大小调整坐标
                contentStream.drawImage(pdImage, 0, 500, pdImage.getWidth(), pdImage.getHeight());
            }
                        // 创建内容流来编辑页面
            try (PDPageContentStream contentStream = new PDPageContentStream(document, firstPage, PDPageContentStream.AppendMode.APPEND, true, true)) {
                // 在页面上添加文本
                contentStream.beginText();
                PDFont font = null;
                try {
                    font = PDType0Font.load(document,Files.newInputStream(new File(fontPath).toPath()));
                } catch (IOException e) {
                    // 字体加载失败，使用备用字体或系统默认字体
                    System.err.println("Could not load font file: " + fontPath);
                    font = PDType1Font.HELVETICA; // 使用Helvetica作为备用字体
                }
                contentStream.setFont(font, 24);
                contentStream.newLineAtOffset(100, 250);
                contentStream.showText("Hello, this is a new text added to the template!");
                contentStream.endText();

            }

            // 保存新的PDF文件
            document.save(outputPath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
